package com.zt.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zt.dto.CouponCreateRequest;
import com.zt.dto.CouponQueryRequest;
import com.zt.entity.Coupons;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zt.vo.CouponVO;

import java.util.List;

/**
* @author unmai
* @description 针对表【coupons(优惠券表)】的数据库操作Service
* @createDate 2025-04-25 13:45:46
*/
public interface AdminCouponsService extends IService<Coupons> {

    /**
     * 分页查询优惠券
     * @param request 查询请求
     * @return 分页结果
     */
    IPage<CouponVO> pageCoupons(CouponQueryRequest request);

    /**
     * 创建优惠券
     * @param request 创建请求
     * @return 优惠券ID
     */
    Integer createCoupon(CouponCreateRequest request);

    /**
     * 更新优惠券
     * @param id 优惠券ID
     * @param request 更新请求
     * @return 是否成功
     */
    Boolean updateCoupon(Integer id, CouponCreateRequest request);

    /**
     * 删除优惠券
     * @param id 优惠券ID
     * @return 是否成功
     */
    Boolean deleteCoupon(Integer id);

    /**
     * 获取优惠券详情
     * @param id 优惠券ID
     * @return 优惠券详情
     */
    CouponVO getCouponDetail(Integer id);

    /**
     * 激活优惠券
     * @param id 优惠券ID
     * @return 是否成功
     */
    Boolean activateCoupon(Integer id);

    /**
     * 停用优惠券
     * @param id 优惠券ID
     * @return 是否成功
     */
    Boolean deactivateCoupon(Integer id);

    /**
     * 获取有效的优惠券列表
     * @return 优惠券列表
     */
    List<CouponVO> getActiveCoupons();

    /**
     * 更新过期优惠券状态
     */
    void updateExpiredCoupons();

    /**
     * 批量删除优惠券
     * @param ids 优惠券ID列表
     * @return 是否成功
     */
    Boolean batchDeleteCoupons(List<Integer> ids);
}
